<?php

class DeudasController extends Zend_Controller_Action
{

    public function init()
    {
        $this->initView();
        $this->view->baseUrl = $this->_request->getBaseUrl();
    }

    public function indexAction()
    {
        $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
            $table=new Application_Model_DbTable_Deudas();
            $this->view->datos = $table->Listar();
        }
    }
    
       public  function fechaMysql($fecha)
        {
        $arr = split("-", $fecha);
        if (count($arr) != 3)
        {
            return $fecha;
        } else
        {
            return "$arr[2]-$arr[1]-$arr[0]";
        }
        }


    public function agregarAction()
    {
              $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
//titulo para la pagina
        $this->view->title = "Agregar Deuda";
        //valor para <head><title>
        $this->view->headTitle($this->view->title);
        //creo el formulario
        $form = new Application_Form_Deudas();
        //cambio el texto del boton submit
        $form->submit->setLabel('Guardar Deudas');
        //$form->reset->setLabel('Limpiar');
        //lo asigno oa la accion (la pag web que se mostrara)
        $this->view->form = $form;

        //los formularios envian sus datos a traves de POST
        //si vienen datos de post, es que el usuario ha enviado el formulario
        if ($this->getRequest()->isPost())
        {
            //extrae un arreglo con los datos recibidos por POST
            //es decir, los datos clave=>valor del formulario
            $formData = $this->getRequest()->getPost();
            
            //isValid() revisa todos los validadores y filtros que le
            //aplicamos a los objetos del formulario: se asegura de que los
            //campos requeridos se hallan llenado, que el formato de la fecha
            //sea el correcto, etc
            if ($form->isValid($formData))
            {
                $form->setAttrib('enctype', 'multipart/form-data');
                $file = $form->imagenDeuda->getFileName();
                //aca ya estamos seguros de que los datos son validos
                //ahora los extraemos como se ve abajo
                $fechaInicio = $form->getValue('fechaInicio');
                $numDocumento = $form->getValue('numDocumento');
                $fechaLimite = $form->getValue('fechaLimite');
                $valorDeuda = $form->getValue('valorDeuda');
                $descripcion = $form->getValue('descripcion');
                $idCliente = $form->getValue('idCliente');

                //creo objeto deudas que controla la tabla Usuario de la base de datos
                $deudas = new Application_Model_DbTable_Deudas();
                //llamo a la funcion agregar, con los datos que recibi del form
               $id = $deudas->agregar($fechaInicio, $numDocumento, $fechaLimite, $valorDeuda, $descripcion, $idCliente);

                //indico que despues de haber agregado el album,
                //me redirija a la accion index de AlbumController, es decir,
                //a la pagina que me muestra el listado de albumes
            
               
                 $upload = $form->imagenDeuda->getTransferAdapter();
                 // Lo ideal es que el path lo trajeramos de un archivo de configuracion.
                 $upload->addFilter('Rename', array('target' => PUBLIC_PATH . '/../public/image_deuda/deuda_'. $id .'.jpg',  'overwrite' => true )); 
                 var_dump( $upload->receive() );
                 $this->_helper->redirector('index');
                 
            }
            //si los datos del formulario no son validos, es decir, falta ingresar
            //algunos o el formato es incorrecto...
            else
            {
                //esta funcion vuelve a cargar el formulario con los datos que se
                //enviaron, Y ADEMAS CON LOS MENSAJES DE ERROR, los que se le mostrarán
                //al usuario
                $form->populate($formData);
            }
        }
        }
    }

    public function eliminarAction()
    {
              $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
        $id = $this->_getParam('id', 0);
        
        $tabla = new Application_Model_DbTable_Deudas ();
        //llamo a la funcion borrar
        $tabla->borrar($id);
        //redirijo a la accion index de este controlador, es decir,
        //al listado de clientes
        $this->_helper->redirector('index');
        }
    }

    public function modificarAction()
    {
              $zend_auth = Zend_Auth::getInstance();
        if (!$zend_auth->hasIdentity()) {
            $this->_redirect('login');
        } else {
        //titulo de la pagina
        $this->view->title = "Modificar Deudas";
        $this->view->headTitle($this->view->title);
        //creo el formulario
        $form = new Application_Form_Deudas ();
        //le pongo otro texto al boton submit
        $form->submit->setLabel('Guardar');
        $this->view->form = $form;
       
        
        //si el usuario envia datos del form
        if ($this->getRequest()->isPost())
        {
            $formData = $this->getRequest()->getPost();
            //veo si son validos
            if ($form->isValid($formData))
            {
                //extraigo sus datos
                $id = $form->getValue('id');
                $fechaInicio = $form->getValue('fechaInicio');
                $numDocumento = $form->getValue('numDocumento');
                $fechaLimite = $form->getValue('fechaLimite');
                $valorDeuda = $form->getValue('valorDeuda');
                $descripcion = $form->getValue('descripcion');
                $idCliente = $form->getValue('idCliente');
               
                //creo objeto tabla Album()
                $deuda = new Application_Model_DbTable_Deudas ();
                //LLAMO A FUNCION CAMBIAR, QUE HACE EL UPDATE
                $deuda->cambiar($id, $fechaInicio, $numDocumento, $fechaLimite, $valorDeuda, $descripcion, $idCliente);
                
                
                 
                 $upload = $form->imagenDeuda->getTransferAdapter();
                 // Lo ideal es que el path lo trajeramos de un archivo de configuracion.
                 $upload->addFilter('Rename', array('target' => PUBLIC_PATH . '/../public/image_deuda/deuda_'. $id .'.jpg',  'overwrite' => true )); 
                 var_dump( $upload->receive() );
                 $this->_helper->redirector('index');
                
                //redirijo a accion index
                $this->_helper->redirector('index');
            } 
            //si los datos no son validos, vuelvo a mostrar el form, con 
            //los mensajes de error
            else
            {
                $form->populate($formData);
            }
        }
        //SI LOS DATOS NO VIENEN POR POST, ENTONCES ESTAMOS LLAMANDO A ESTA FUNCION
        //PARA QUE MUESTRE LOS DATOS DE UN CLIENTE
        else
        {
            //YO HE DECIDIDO QUE DEBE VENIR UN PARAMETRO LLAMADO ID, con el 
            //id del cliente que deseo editar
            //si viene un parametro llamado id le asigno su valor a $id; 
            //si no viene, le asigno cero
            //esto es como llamar a $_REQUEST
            //
            //$id = (int)$this->_request->getParam('Id', 0);
            $id = (int)$this->_getParam('id', 0);
            //si viene algun id
            if ($id > 0)
            {
               //CREO FORM
                $deud = new Application_Model_DbTable_Deudas ();
                //extraigo de la talba el album id= $id
                $deud= $deud->get($id);
                //populate() toma los datos de $cliente y los coloca en el formualrio.
                //PARA QUE ESTO FUNCIONE, EL NOMBRE DE LOS OBJETOS DEL FORM DEBE
                //SER IGUAL AL NOMBRE DE LOS CAMPOS EN LA TABLA!!
                
                $form->populate($deud);
            }
        }
    }
    }

    
}





